<?php
class GruposController extends CustomController
{

    public function verGrupos()
    {
        // Check if user is logged in
        $this->userLoggedIn();
        $this->isAdmin();
        // Get page and list
        $pageNumber = $this->getPage();
        $grupos = $this->model->getGrupos($pageNumber);
        $vars = array(
            'editar_vehiculo' => $this->link(MODULE_VEHICULOS, MODULE_VEHICULOS_EDITAR_VEHICULO).'?id=',
            'edit_action'     => $this->link(MODULE_GRUPOS, MODULE_GRUPOS_EDITAR_GRUPO).'?id=',
            'delete_action'   => $this->link(MODULE_GRUPOS, MODULE_GRUPOS_BORRAR_GRUPO).'?id=',
            'pagination_link' => $this->link(MODULE_GRUPOS, MODULE_GRUPOS_LISTAR_GRUPOS),
            'grupos'          => $grupos,
        );
        $this->view->verGrupos($vars);
    }

    public function nuevoGrupo()
    {
        // Check if user is logged in
        $this->userLoggedIn();
        $this->isAdmin();
        // Basic vars
        $vars = array(
            'vehiculos'           => $this->model->getVehiculos(),
            'vehiculos_por_grupo' => array(),
            'nuevo_grupo'         => $this->link(MODULE_GRUPOS, MODULE_GRUPOS_CREAR_GRUPO)
        );
        // Post?
        if ($_POST)
        {
            $grupo = $this->getValue('grupo');
            if (!empty($grupo))
            {
                $vehiculosPorGrupo = array();
                $unset = array();
                if (!empty($vars['vehiculos']))
                {
                    foreach ($vars['vehiculos'] as $id => $vehiculo)
                    {
                        if ((!empty($grupo['vehiculos'])) && in_array($id, $grupo['vehiculos']))
                        {
                            $vehiculosPorGrupo[$id] = $vehiculo;
                            $unset[]=$id;
                        }
                    }
                    if (!empty($unset))
                    {
                        foreach ($unset as $id)
                        {
                            unset($vars['vehiculos'][$id]);
                        }
                    }
                }
                // Errores
                $errs = array();
                if (empty($grupo['nombre'])) $errs[]= 'El nombre del grupo no puede estar vac&iacute;o';
                if (empty($grupo['vehiculos'])) $errs[]= 'El grupo debe contar con al menos un veh&iacute;culo';
                if (!empty($errs))
                {
                    $this->error($errs);
                }
                else
                {
                    if ($this->model->nuevoGrupo($grupo, array_keys($vehiculosPorGrupo)))
                    {
                        $this->notice('Grupo creado exitosamente.');
                        $this->redirectTo(MODULE_GRUPOS);
                    }
                    else
                    {
                        $this->error('Error creando grupo. Intente nuevamente.');
                    }
                }
                $vars['grupo'] = $grupo;
                $vars['vehiculos_por_grupo'] = $vehiculosPorGrupo;
            }
        }
        // View
        $this->view->nuevoGrupo($vars);
    }

    public function editarGrupo()
    {
        // Check if user is logged in
        $this->userLoggedIn();
        $this->isAdmin();
        // Check if user is logged in
        $id = $this->getValue('id');
        $id = intval($id);
        // Basic vars
        $vars = array(
            'vehiculos'           => $this->model->getVehiculos(),
            'vehiculos_por_grupo' => array(),
            'editar_grupo'        => $this->link(MODULE_GRUPOS, MODULE_GRUPOS_EDITAR_GRUPO)
        );
        // Get grupo
        if ($grupo = $this->model->grupoExists($id))
        {
            if ($_POST)
            {
                $postedGrupo = $this->getValue('grupo');
                $vehiculosPorGrupo = array();
                $unset = array();
                if (!empty($vars['vehiculos']))
                {
                    foreach ($vars['vehiculos'] as $id => $vehiculo)
                    {
                        if ((!empty($postedGrupo['vehiculos'])) && in_array($id, $postedGrupo['vehiculos']))
                        {
                            $vehiculosPorGrupo[$id] = $vehiculo;
                            $unset[]=$id;
                        }
                    }
                    if (!empty($unset))
                    {
                        foreach ($unset as $id)
                        {
                            unset($vars['vehiculos'][$id]);
                        }
                    }
                }
                // Errores
                $errs = array();
                if (empty($postedGrupo['nombre'])) $errs[]= 'El nombre del grupo no puede estar vac&iacute;o';
                if (empty($postedGrupo['vehiculos'])) $errs[]= 'El grupo debe contar con al menos un veh&iacute;culo';
                if (!empty($errs))
                {
                    $this->error($errs);
                }
                else
                {
                    if ($this->model->editarGrupo($grupo['idgrupo'], $postedGrupo, array_keys($vehiculosPorGrupo)))
                    {
                        $this->notice('Grupo editado exitosamente.');
                        $this->redirectTo(MODULE_GRUPOS);
                    }
                    else
                    {
                        $this->error('Error editando grupo. Intente nuevamente.');
                    }
                }
                $postedGrupo['idgrupo'] = $grupo['idgrupo'];
                $grupo = $postedGrupo;
                $grupo['vehiculos'] = $vehiculosPorGrupo;
            }
            else
            {
				if(!empty($grupo['vehiculos']))
				{
					foreach($grupo['vehiculos'] as $vehiculo)
					{
						unset($vars['vehiculos'][$vehiculo['idvehiculo']]);
					}
				}
            }
            $vars['grupo'] = $grupo;
            $vars['vehiculos_por_grupo'] = $grupo['vehiculos'];
            $this->view->editarGrupo($vars);
        }
        else
        {
            $this->error('El grupo solicitado no es v&aacute;lido');
            $this->redirectTo(MODULE_GRUPOS);
        }
    }

    public function borrarGrupo()
    {
        // Check if user is logged in
        $this->userLoggedIn();
        $this->isAdmin();
        // Check if id exists
        $id = $this->getValue('id');
        $id = intval($id);
        if ($grupo = $this->model->grupoExists($id))
        {
            if ($this->model->borrarGrupo($id))
            {
                $this->notice("Grupo borrado con &eacute;xito");
            }
            else
            {
                $this->error("El grupo no pudo ser borrado");
            }
            $this->redirectTo(MODULE_GRUPOS);
        }
        else
        {
            $this->error("El veh&iacute;culo indicado no existe");
            $this->redirectTo(MODULE_GRUPOS);
        }
    }

}
?>